﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Sigos
{
    public partial class frmParametros : Form
    {
        public frmParametros()
        {
            InitializeComponent();
        }

        Utilidades util = new Utilidades();

        private void btnSair_Click(object sender, EventArgs e)
        {
            if (util.Sair() == true)
            {
                this.Close();
            }
        }

        public void CarregaEstados()
        {
            using (SigosEntities Entidades = new SigosEntities())
            {
                var Estado = (from est in Entidades.MunicipiosIBGE                         
                              select new { est.NomeUF, est.SiglaUF, est.CodigoUF }).Distinct();
                var Estado2 = Estado.OrderBy(est => est.NomeUF);
                cboEstado.DataSource = Estado2;
                cboEstado.DisplayMember = "SiglaUF";
                cboEstado.ValueMember = "CodigoUF";
            }
        }

        public void CarregaCidades(string SiglaEstado)
        {
            using (SigosEntities Entidades = new SigosEntities())
            {
                var Cidade = (from cid in Entidades.MunicipiosIBGE
                              where cid.SiglaUF == SiglaEstado
                              orderby cid.NomeMunicipio
                              select cid).ToList();
                cboCidade.DataSource = Cidade;
                cboCidade.DisplayMember = "NomeMunicipio";
                cboCidade.ValueMember = "Municipio";
            }
        }

        public void CarregaDados()
        {
            using (SigosEntities Entidades = new SigosEntities())
            {

                try
                {
                    var Dados = Entidades.Parametros.FirstOrDefault();
                    cboEstado.SelectedValue = Dados.cUF;
                    txtCodigoEmissao.Text = Dados.cNF;
                    txtSerie.Text = Dados.serie;
                    cboCidade.SelectedValue = Dados.cMunFG;
                    cboAmbEmissao.SelectedIndex = Dados.tpAmb-1;
                    
                    cboTipoImpressao.SelectedIndex = 1;
                }
                catch (System.Exception ex)
                {
                    util.Erro("Ocorreu um erro ao tentar salvar os dados, o erro foi: " + ex.Message.ToString());
                }
            }
        }

        private void frmParametros_Load(object sender, EventArgs e)
        {
            CarregaEstados();
            CarregaDados();
        }

        private void cboEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregaCidades(cboEstado.Text);
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            lblProcessando.Visible = true;
            bProgresso.Visible = true;
            bProgresso.Enabled = true;
            bProgresso.Value = 50;
            using (SigosEntities Entidades = new SigosEntities()){
                var vParametros = Entidades.Parametros.FirstOrDefault();
                vParametros.cUF = int.Parse(cboEstado.SelectedValue.ToString());
                vParametros.cNF = txtCodigoEmissao.Text;
                vParametros.serie = txtSerie.Text;
                vParametros.mod = txtModelo.Text;
                vParametros.cMunFG = int.Parse(cboCidade.SelectedValue.ToString());
                vParametros.tpAmb = int.Parse(cboAmbEmissao.SelectedIndex.ToString())+1; // adicionado + 1 pois a NF-e usa parametros 1 e 2 e o indice começa em 0;

                Entidades.ObjectStateManager.ChangeObjectState(vParametros, EntityState.Modified);
                Entidades.SaveChanges();
                util.Informacao("Registro salvo com sucesso");
                this.Close();


            }

            bProgresso.Value = 100;
            bProgresso.Visible = false;
            lblProcessando.Visible = false;
        }

        private void frmParametros_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.F4:
                    btnSalvar_Click(sender, e);
                    break;
                case Keys.F6:
                    btnSair_Click(sender, e);
                    break;
            }
        }
    }
}
